Update:Biggest Update Yet
The original post can be found here. ArteroPk players, we have heard your complaints about lagg, and finally we come with the biggest update we have ever done. Over the past 3 weeks I have been working on rewritting a giant part of the internal server code, the engine as it is called. In this topic I will list the most noticable features and changes for the players that this absolutely massive update will include. This is a giant update, and there is a very big chance that this update will bring many big bugs. We hope for your participation to help us figure out these bugs, and solve them. We will try our absolute best to get everything as close to perfect as possible. This update is neccessary, but also will take some patience from the community to get it to the state where everyone is happy with it. IMPORTANT: *- STARTING THE FIRST RESTART OF 26/02/2016 WE'LL HAVE DOUBLE EXPERIENCE, 1.5X DROPRATES AND DOUBLE HONOR POINTS *- SUMMONING IS DISABLED FOR A COUPLE OF WEEKS, READ MORE ABOUT IT BELOW. *- HUNTER IS DISABLED FOR A COUPLE OF WEEKS, READ MORE ABOUT IT BELOW. *- LEAVE BUGS IN THE BUG SUBFORUM *- WE'RE STILL HAVING VERY FREQUENT DDOS ATTACKS, SO IT MAY STILL FEEL LAGGY EVERY SO OFTEN. *- MAKE SURE TO UPDATE YOUR CLIENT WHENEVER YOU TRY AND PLAY OR HAVE ISSUES. What this update will not do This update will not affect gameplay. The combat hasn't changed, not any of the content has really changed, this is a purely internal update that just changes a giant amount of internal structure. What this update will do New Engine I've gotten quite a lot of experience with solid RS2 engines over the past months due to me working on DeviousPk and putting a lot of effort in a strong engine. I used my basecode for the DeviousPk engine to change out this engine for a way better one. Basically, we used to just do tasks as fast as possible, regardless of what the task was, which way sound good, but wasn't. What this did is put a lot of unneeded pressure on the engine, because after all, you only notice changes every 600ms. This makes the engine also very very vulnerable for DDOS attacks, as you may recall, a DDOS attack could simply put the server down. Now, the new engine doesn't completely solve this, but it can handle A LOT more traffic than it could before, without really affecting things too much. Player updating As part of the engine update I also updated the player updating, also using some of my code for DeviousPk. The playerupdating used to be a best-effort event, meaning that it would just try and execute as close as it could to it's delay. Sometimes the event would take 600ms, sometimes 598ms and sometimes 700+ms. This doesn't sound like a lot, but for PK'ing it is very important that the server runs on a stable clock to make switches etc possible. Therefor I updated the playerupdating to be on a consistent clock, and it will do whatever it can to keep the clock speed. Let's say it doesn't make it due to DDOSing or something, it will instead of slowing down just catch up the missed ticks, making the slow gameplay go away. Playersaving As part of the security-update that I was working on for a while already before this I changed the way players are saved. Playerfiles now get saved in JSON, which is an absolute buttload faster than just plain text. This makes it so that loading and saving a player puts a lot less strain on the server, and generally happens faster. It also will stop saving unneccessary information. For example, if a player doesn't have any kills, there is no point in saving that, because a player default has no kills. It's called redundancy in programming, and it's something that you want to avoid in most situations. It only creates extra work for the character file reading and writing, and makes the file size bigger. Security We've upped our security by a lot. we started hashing passwords finally due to it being possible with JSON. The old saving method didn't support all characters, which ment that some passwords would become useless after hashing them. This ment that we didn't have a good option to hash them, so we had to wait for JSON saving to add this feature. Again, it's the same code that I wrote for DeviousPk, just slightly adjusted to work on ArteroPk. Login speed As part of the engine rewrite I also had to rewrite the login protocol. The protocol now works in a way where it will only handle what it needs, rather than loading everything first and then handling everything. This would make it so that it may load everything, to then realize that for example the world is full, and it did all that effort for nothing. Now we check vital things first, and only load as far as needed for each stage. This makes the logging in a BUTTLOAD faster, speeding it up BY ALMOST 10 TIMES! It also means that we are way less vulnerable for DDOS attacks, as it can handle the attempted logins at a WAY faster rate. Two-factor authentication This is something that has only recently found it's way to RSPS. It's basically all you would expect. I added a box to the client to write your two-factor authentication code in if you have it enabled. This is not mandatory and is just added security to your account. It works with every authentication app that you may use that follows the internation standard. You will be able to toggle this ingame by talking to the security guard in the Edgeville bank. Right now this is staff only as this is still in it's testing phases, but as soon as we're ready to release it to the big public we'll let you guys know :) Just know that it's coming, very very soon. Database speed A big strain on the server has always been the database. We've rewritten a big part of the code to make the databases run on high speed again, allowing us to use them in future projects without having to worry about loss of performance or issues with lagg. Code cleanup Also as part of the speed update I've started cleaning up a bunch of junk code. With junk code I mean code that really has no function or meaning anymore, or is simply dead content. Did you know we had Checker? Neither did I, so I removed it. It was simply dead content that took time to load but really wasn't used, and also participated to lagg. On top of this I also redid a lot of laggy code to work faster in general, putting less strain on the server. Startup changes I've also rewritten the startup for the server, this isn't really very noticable for the players, but it can have an impact. For example, when we used to do an update, it would easily take 20 seconds for the server to just start up. I've changed a bunch of this code to work superfast and use a special method to load content at blazing speeds. As I said before, starting up could take more than 20 seconds, well... Now it takes 2 - 3 seconds, depending on how fast SQL reacts. Questtab I revisited my beloved questtab to do some updates, the code will now dynamically add information to it, and remove information again if it is no longer needed. This allows us to display a lot more information than before, and also make information for only certain people. My questtab for example will display uptime, while normal players and staff simply won't see this. When an event starts, it will add itself to your questtab, while before it would replace an empty reserved spot. This allows for many applications, such as punishment display, or even multiple pages with different types of information. Achievements I've updated the achievement information to be more clear in what it means. In the past a bunch of information wasn't really clear for the players. For example, did anyone know that when you saw a green X it ment you were in the contraint area of that achievements? I didn't till I read the code for it. Things like that now give meaningful feedback. Character file cleaning With the new saving and the added speed from JSON it is now possible to clean character files every so often from useless files. Take for example a player that hasn't logged in in a year and is still standing in the tutorial, chances are that it is never going to get played again. These types of inactive players will get removed. This wasn't really possible in the past due to the sheer amount of character files and the time it took to scan them all. It takes about 40 minutes to just read all individual character files in memory, let alone scan them and rewrite them. With JSON, it takes... 188ms to read, clean and write them all. Simply stunningly fast. Summoning Summoning is currently disabled and is waiting for a rewrite. Summoning was written in a terrible way, and I discovered that summoning had 'floating' NPC's, this means that the NPC isn't registered to the server, and the server doesn't really know it exists. None of the summoning code takes this into account, making it very unstable and really buggy with this version, where a lot of the actions do rely on this registering. Therefor Summoning is awaiting a rewrite, which I will get to in the next couple of weeks. Hunter Hunter is old code written and it has an abuse mechanic in it. Hunter will stay disabled till I find the time to also rewrite this piece of content. Thank you for reading this all :) Leave your feedback in the comments and post bugs in the bugs subforum. Thank you all for your patience with ArteroPk and for staying with us over the past difficult month. Have a nice day! Glis